package edu.neu.swc.skynet.movie;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.Date;
import java.util.List;

/**
 * <h1>电影详细信息</h1>
 * 该值对象与电影实体类对应
 * 用于展示全部的电影信息
 * 可以转化为电影的列表简单信息和展示信息
 */
@ApiModel(description = "详细的电影信息")
@Data
@NoArgsConstructor
@AllArgsConstructor
public class MovieInfo {

    @ApiModelProperty(value = "电影表主键Id")
    private Long id;

    @ApiModelProperty(value = "电影名称")
    private String movieName;

    @ApiModelProperty(value = "电影海报URL")
    private String movieImage;

    @ApiModelProperty(value = "电影导演")
    private String movieDirector;

    @ApiModelProperty(value = "电影主演")
    private String movieMain;

    @ApiModelProperty(value = "电影演员表")
    private MovieActor movieActor;

    @ApiModelProperty(value = "电影其他信息")
    private MovieProperties movieProperties;

    @ApiModelProperty(value = "电影上映时间")
    private Date movieRelease;

    @ApiModelProperty(value = "电影出品国家")
    private String movieLocation;

    @ApiModel(description = "详细的演员表信息")
    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    public static class MovieActor{

        @ApiModelProperty(value = "电影演员表")
        private List<String> movieActor;
    }

    @ApiModel(description = "电影的其他信息")
    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    public static class MovieProperties{

        @ApiModelProperty(value = "电影类别")
        private String movieType;

        @ApiModelProperty(value = "电影评级，例如R级")
        private String movieTag;
    }
}
